package com.zw.mes.module.prodtaskmanager.service;

import com.zw.mes.module.prodtaskmanager.entity.*;
import com.zw.mes.module.prodtaskmanager.mapper.ProdOrdMapper;
import com.zw.mes.module.system.service.LogService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * 对外接口服务层
 *
 * @author 徐一贺
 */
@Log4j2
@Service
public class ExternalInterfaceService {
    @Autowired
    private LogService logService;

    @Autowired
    private ProdOrdMapper prodOrdMapper;

    /**
     * @methodName: changeStatus
     * @description: 设备类生产令根据生产令和类型修改对应类型的任务、反馈状态
     * @param: prodNo 生产令编号
     * @param: taskType 任务类别
     * @param: major 专业
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/1 14:31
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @Transactional(rollbackFor = Exception.class)
    public String changeStatus(String prodNo, String taskType, String taskStatus, String major) {
        try {
            //根据生产令编号获取生产令
            ProdOrd prodOrd = prodOrdMapper.getProdOrdByProdNo(prodNo);
            //根据生产令编号获取总调计划
            ProdPla prodPla = prodOrdMapper.getProdPlaByPropProdNo(prodNo);
            if ("机加".equals(taskType)) {
                ProdTas prodTas = new ProdTas();
                prodTas.setProtPropId(prodPla.getPropId());
                prodTas.setProtCod("t14");
                ProdTas machiningTask = prodOrdMapper.getProdTasByProtPropIdAndProtCod(prodTas);
                if ("未开始".equals(taskStatus)) {
                    machiningTask.setProtSta(1);
                    machiningTask.setProtSou("《转序管理系统》");
                } else if ("执行中".equals(taskStatus)) {
                    machiningTask.setProtSta(2);
                    machiningTask.setProtSou("《转序管理系统》");
                } else if ("已完成".equals(taskStatus)) {
                    machiningTask.setProtSta(3);
                    machiningTask.setProtSou("《转序管理系统》");
                }
                prodOrdMapper.updateProdTasPrptStaAndProtSouByPrimaryKey(machiningTask);
                logService.saveLog("转序系统通知-生产管理系统-机加任务完成", "生产令编号【" + prodNo + "】的机加任务写入成【" + taskType + "】。");
            } else if ("铆焊".equals(taskType)) {
                ProdTas prodTas = new ProdTas();
                prodTas.setProtPropId(prodPla.getPropId());
                prodTas.setProtCod("t11");
                ProdTas rivetTask = prodOrdMapper.getProdTasByProtPropIdAndProtCod(prodTas);
                if ("未开始".equals(taskStatus)) {
                    rivetTask.setProtSta(1);
                    rivetTask.setProtSou("《转序管理系统》");
                } else if ("执行中".equals(taskStatus)) {
                    rivetTask.setProtSta(2);
                    rivetTask.setProtSou("《转序管理系统》");
                } else if ("已完成".equals(taskStatus)) {
                    rivetTask.setProtSta(3);
                    rivetTask.setProtSou("《转序管理系统》");
                }
                prodOrdMapper.updateProdTasPrptStaAndProtSouByPrimaryKey(rivetTask);
                logService.saveLog("转序系统通知-生产管理系统-铆焊任务完成", "生产令编号【" + prodNo + "】的机加任务写入成【" + taskType + "】。");
            } else if ("装配发起".equals(taskType)) {
//                ProdPlaRet prodPlaRet = new ProdPlaRet();
//                prodPlaRet.setPrprPropId(prodPla.getPropId());
//                if("机械".equals(major)){
//                    prodPlaRet.setPrprCod("r15");
//                }else if("流体".equals(major)){
//                    prodPlaRet.setPrprCod("r16");
//                }else if("自动化".equals(major)){
//                    prodPlaRet.setPrprCod("r17");
//                }
//                if("已完成".equals(taskStatus)){
//                    prodPlaRet.setPrprRetDat(new Date());
//                }
//                prodOrdMapper.updateProdPlaRetPrprRetDatByPrprPropIdAndPrprCod(prodPlaRet);
//
//
//
//
//                ProdTas prodTas = new ProdTas();
//                prodTas.setProtPropId(prodPla.getPropId());
//                prodTas.setProtCod("t11");
//                ProdTas machiningTask = prodOrdMapper.getProdTasByProtPropIdAndProtCod(prodTas);
//                if("未开始".equals(taskStatus)){
//                    machiningTask.setProtSta(1);
//                    machiningTask.setProtSou("《转序管理系统》");
//                }else if("执行中".equals(taskStatus)){
//                    machiningTask.setProtSta(2);
//                    machiningTask.setProtSou("《转序管理系统》");
//                }else if("已完成".equals(taskStatus)){
//                    machiningTask.setProtSta(3);
//                    machiningTask.setProtSou("《转序管理系统》");
//                }
            } else if ("装配".equals(taskType)) {
//                ProdPlaRet prodPlaRet = new ProdPlaRet();
//                prodPlaRet.setPrprPropId(prodPla.getPropId());
//                if("机械".equals(major)){
//                    prodPlaRet.setPrprCod("r18");
//                }
//
//
//
//
//
//                ProdTas prodTas = new ProdTas();
//                prodTas.setProtPropId(prodPla.getPropId());
//                prodTas.setProtCod("t11");
//                ProdTas machiningTask = prodOrdMapper.getProdTasByProtPropIdAndProtCod(prodTas);
//                if("未开始".equals(taskStatus)){
//                    machiningTask.setProtSta(1);
//                    machiningTask.setProtSou("《转序管理系统》");
//                }else if("执行中".equals(taskStatus)){
//                    machiningTask.setProtSta(2);
//                    machiningTask.setProtSou("《转序管理系统》");
//                }else if("已完成".equals(taskStatus)){
//                    machiningTask.setProtSta(3);
//                    machiningTask.setProtSou("《转序管理系统》");
//                }
            }
            //获取下料、机加、铆焊、装配、安装已完成的
            Integer completedCount = prodOrdMapper.getProdTasByProtPropIdAndCods(prodPla.getPropId());
            //获取下料、机加、铆焊、装配、安装等于执行中的
            Integer notStartedCount = prodOrdMapper.getProdTasByProtPropIdAndCodsNotStarted(prodPla.getPropId());
            if(completedCount==5){
                prodOrd.setProdExeSta(3);
            }else if(notStartedCount>0){
                prodOrd.setProdExeSta(2);
            }
            prodOrdMapper.updateProdOrdProdExeStaByPrimaryKey(prodOrd);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("" + e.getMessage());
            return "写入失败！";
        }
        return "写入成功！";
    }

    /**
     * @methodName: getProdOrdByProdNo
     * @description: 根据生产令编号获取生产
     * @param: prodNo
     * @return： com.zw.mes.module.prodtaskmanager.entity.ProdOrd
     * @exception：
     * @author： 徐一贺 tel:18941916590
     * @designer： 陈欣，盖世奇
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/1 15:28
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    public ProdOrd getProdOrdByProdNo(String prodNo) {
        return prodOrdMapper.getProdOrdByProdNo(prodNo);
    }
}
